import 'package:flutter/material.dart';

// 程序入口，启动 Flutter 应用
void main() => runApp(const MyApp());

// 应用的主类，继承 StatelessWidget，负责配置应用的主题和首页
class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Scaffold 功能演示', // 标题为中文，更直观
      theme: ThemeData(
        primarySwatch: Colors.cyan, // 主题色为 cyan
      ),
      home: const ScaffoldRoute(),
    );
  }
}

// 主页面，使用 StatefulWidget 管理底部导航栏的状态
class ScaffoldRoute extends StatefulWidget {
  const ScaffoldRoute({super.key});

  @override
  _ScaffoldRouteState createState() => _ScaffoldRouteState();
}

class _ScaffoldRouteState extends State<ScaffoldRoute> {
  int _selectedIndex = 1; // 当前选中的底部导航索引，初始为第2个页面

  // 页面内容列表，与底部导航栏对应
  static const List<Widget> _pageContents = <Widget>[
    Center(
      child: Text('主页', style: TextStyle(fontSize: 26)),
    ), // 文字为更简洁的中文，字体稍大
    Center(child: Text('商务', style: TextStyle(fontSize: 26))),
    Center(child: Text('校园', style: TextStyle(fontSize: 26))),
  ];

  // 处理底部导航栏点击事件，更新选中的页面
  void _onItemTapped(int index) {
    setState(() {
      _selectedIndex = index;
    });
  }

  // 处理悬浮按钮点击事件，显示提示
  void _onAdd() {
    ScaffoldMessenger.of(context).showSnackBar(
      const SnackBar(content: Text('点击了新增按钮 - FloatingActionButton')),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Scaffold 功能展示'), // 标题为中文
        centerTitle: true, // 标题居中
        actions: <Widget>[
          // 分享按钮
          IconButton(
            icon: const Icon(Icons.share_outlined), // 更换图标
            tooltip: '分享内容',
            onPressed: () {
              ScaffoldMessenger.of(
                context,
              ).showSnackBar(const SnackBar(content: Text('点击了分享按钮 - AppBar')));
            },
          ),
          // 搜索按钮
          IconButton(
            icon: const Icon(Icons.search_rounded), // 更换图标
            tooltip: '搜索内容',
            onPressed: () {
              ScaffoldMessenger.of(
                context,
              ).showSnackBar(const SnackBar(content: Text('点击了搜索按钮 - AppBar')));
            },
          ),
        ],
      ),
      drawer: const MyDrawer(), // 左侧抽屉菜单
      bottomNavigationBar: BottomNavigationBar(
        items: const <BottomNavigationBarItem>[
          BottomNavigationBarItem(
            icon: Icon(Icons.home_outlined),
            label: '主页',
          ), // 图标和标签为中文
          BottomNavigationBarItem(
            icon: Icon(Icons.work_outline),
            label: '商务',
          ), // 图标更换
          BottomNavigationBarItem(
            icon: Icon(Icons.school_outlined),
            label: '校园',
          ), // 图标更换
        ],
        currentIndex: _selectedIndex,
        selectedItemColor: Colors.cyan, // 修复：替换 fixedColor
        onTap: _onItemTapped,
      ),
      floatingActionButton: FloatingActionButton(
        child: const Icon(Icons.add_circle_outline), // 更换图标
        tooltip: '新增内容',
        onPressed: _onAdd,
      ),
      body: _pageContents[_selectedIndex], // 显示当前选中的页面内容
    );
  }
}

// 抽屉菜单组件，提供用户头像和菜单选项
class MyDrawer extends StatelessWidget {
  const MyDrawer({super.key});

  @override
  Widget build(BuildContext context) {
    return Drawer(
      child: MediaQuery.removePadding(
        context: context,
        removeTop: true, // 移除顶部默认内边距
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: <Widget>[
            // 用户信息区域
            Padding(
              padding: const EdgeInsets.only(top: 40.0),
              child: Row(
                children: <Widget>[
                  Padding(
                    padding: const EdgeInsets.symmetric(horizontal: 16.0),
                    child: ClipOval(
                      child: Image.asset(
                        'assets/images/avatar.jpg', // 使用通用图片名称，需在 pubspec.yaml 配置
                        width: 80,
                        height: 80,
                        fit: BoxFit.cover,
                      ),
                    ),
                  ),
                  const Text(
                    '张三', // 更换用户名
                    style: TextStyle(
                      fontWeight: FontWeight.bold,
                      fontSize: 18,
                    ), // 增大字体
                  ),
                ],
              ),
            ),
            const Divider(),
            // 菜单列表
            Expanded(
              child: ListView(
                children: <Widget>[
                  ListTile(
                    leading: const Icon(Icons.person_add), // 更换图标
                    title: const Text('添加账户'),
                    onTap: () {
                      Navigator.pop(context); // 关闭抽屉
                      ScaffoldMessenger.of(context).showSnackBar(
                        const SnackBar(content: Text('点击了添加账户 - Drawer')),
                      );
                    },
                  ),
                  ListTile(
                    leading: const Icon(Icons.settings_applications), // 更换图标
                    title: const Text('账户管理'),
                    onTap: () {
                      Navigator.pop(context);
                      ScaffoldMessenger.of(context).showSnackBar(
                        const SnackBar(content: Text('点击了账户管理 - Drawer')),
                      );
                    },
                  ),
                  ListTile(
                    leading: const Icon(Icons.info_outline), // 更换图标
                    title: const Text('关于我们'),
                    onTap: () {
                      Navigator.pop(context);
                      ScaffoldMessenger.of(context).showSnackBar(
                        const SnackBar(content: Text('点击了关于我们 - Drawer')),
                      );
                    },
                  ),
                ],
              ),
            ),
            const Divider(),
            // 底部版权信息
            const Padding(
              padding: EdgeInsets.all(16.0),
              child: Text(
                '© 2025 张三工作室', // 更新版权信息
                style: TextStyle(color: Colors.grey),
              ),
            ),
          ],
        ),
      ),
    );
  }
}
